package br.com.tiespec.ejb.Ejb;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;

import br.com.tiespec.ejb.Dao.ClientePortalDAO;
import br.com.tiespec.ejb.Dao.UsuarioDAO;
import br.com.tiespec.ejb.EjbInterface.ClientePortalInterface;
import br.com.tiespec.model.Enum.TipoSortOrder;
import br.com.tiespec.model.Modelo.ClientePortal;
import br.com.tiespec.model.Modelo.Usuario;
import br.com.tiespec.model.Util.DAOException;
import br.com.tiespec.model.Util.RNException;

@Stateless(mappedName = "ClientePortalImpl")
@Local(value=ClientePortalInterface.class)
public class ClientePortalImpl implements ClientePortalInterface  {

	private static final long serialVersionUID = 1L;
	
	@EJB ClientePortalDAO cpDao;
	@EJB UsuarioDAO uDao;
	
	@Override
	public List<ClientePortal> listarClientePortal(int first, int pageSize,
			String sortField, TipoSortOrder sortOrder,
			String varBuscaClientePortal) {
		return cpDao.listarClientePortal(first, pageSize, sortField, 
				sortOrder, varBuscaClientePortal);
	}

	@Override
	public int countClientePortal(String varBuscaClientePortal) {
		return cpDao.countClientePortal(varBuscaClientePortal);
	}

	@Override
	public ClientePortal selecionarClientePortal(Long id) {
		return cpDao.selecionarComResponsavel(id);
	}

	@Override
	public ClientePortal selecionarClientePortalComUsuarios(Long id) {
		return cpDao.selecionarComUsuarios(id);
	}

	@Override
	public void salvarClientePortal(ClientePortal clientePortalInstance)
			throws RNException {
		try {
			cpDao.save(clientePortalInstance);
		} catch (DAOException e) {
			e.printStackTrace();
		}
		
	}

	@Override
	public void excluirClientePortal(ClientePortal clientePortalInstance)
			throws RNException {
		try {
			cpDao.delete(ClientePortal.class, clientePortalInstance.getId());
		} catch (DAOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public List<Usuario> listarUsuarioReponsavel(int first, int pageSize,
			String sortField, TipoSortOrder sortOrder,
			String varBuscaUsuarioResponsavel) {
		return uDao.listarUsuario(first, pageSize, sortField, sortOrder, varBuscaUsuarioResponsavel);
	}

	@Override
	public int countUsuarioResponsavel(String varBuscaUsuarioResponsavel) {
		return uDao.countUsuario(varBuscaUsuarioResponsavel);
	}

	@Override
	public Usuario selecionarUsuario(Long id) {
		return uDao.selecionarUsuario(id);
	}

}